<?php

require_once "../class/db.class.php";
require_once "../dyn/fonctions.inc.php";

class fen
{
	protected $charset; //Format d'encodage de la page
	protected $mode; // Mode de développement (PRODUCTION, VERBOSE, DEBUG)
	protected $rangMinAdmin;// Rang minimum d'administration pour consulter la page
	protected $theme; // Theme CSS JQuery UI
	
	public $titre;// Titre de la page
	public $db; //Objet base de données
	public $nomSite; // Nom du site
	
	
	/**
		fen : Initialise un objet fenêtre 
			- titre: Titre de la page
			- rangAdmin: rang d'administration minimum pour accéder à cette page
	**/
	public function __construct($titre, $rangAdmin = 0)
	{
		ob_start();
		setlocale(LC_TIME, 'fr_FR','fra');
		$this->titre = $titre;
		$this->charset = "utf-8";
		$this->mode = "DEBUG";
		$this->nomSite = "Les mots a la pelle";
		$this->theme = "south-street";
		$this->rangMinAdmin = $rangAdmin;
		require_once "../dyn/session.inc.php";

		$this->_initFlux();
		$this->_gestionBD();
	}


/**


	Fonctions d'affichage


**/


	/**
		displayHeader() : Vérifie les droits d'authentification et affiche le contenu HTML de l'entête si flag à html
	**/
	public function displayHeader()
	{
	if(! $this->verifDroits() )
			$this->_die("Droits insuffisants","Vous ne possédez pas les droits nécéssaires pour effectuer cette action");

		$html = ob_get_contents();
		if($html != "")
		{
			ob_end_clean();
			ob_start();
			$this->_die("Une erreur est survenue",$html);
		}
		
		echo "<!DOCTYPE html
		PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" 
		\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n
		<html xmlns=\"http://www.w3.org/1999/xhtml\">\n

		<head>\n
			\t<meta http-equiv=\"Content-Type\" 
			content=\"text/html;charset=".$this->charset."\" />\n
			<meta name=\"description\" content=\"".$this->nomSite." est un atelier d'écriture\" />\n
			<meta name=\"keywords\" content=\"".$this->nomSite.", ecriture, atelier, gratuit\" />\n
			<meta http-equiv=\"Content-Language\" content=\"fr\" />\n
			<meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />
				
				
				
				\t<title>".($this->nomSite)." ~ ".($this->titre)."</title>\n
				\t<link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"../images/logo-LMLP.png\" />\n
				\t<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../css/".$this->theme."/jquery-ui-1.10.2.custom.min.css\" />\n
				\t<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../css/style-connexion.css\" />\n
				\t<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../css/style.css\" />\n
				\t<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../css/orbit-1.2.3.css\" />\n
				\t<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../css/side-scroll.css\" />\n
				\t<script type=\"text/javascript\" src=\"../js/jquery-1.9.1.js\" ></script>\n
				\t<script type=\"text/javascript\" src=\"../js/jquery-ui-1.10.2.custom.js\" ></script>\n
				\t<script type=\"text/javascript\" src=\"../js/jquery.dialogueAnime.js\" ></script>\n
				\t<script type=\"text/javascript\" src=\"../js/jquery.datePicker.js\" ></script>\n
				\t<script type=\"text/javascript\" src=\"../js/jquery.menuAccordion.js\" ></script>\n
				\t<script type=\"text/javascript\" src=\"../js/jquery.orbit-1.2.3.js\" ></script>\n
				\t<script type=\"text/javascript\" src=\"../js/jquery.side-scroll.js\" ></script>\n
				\t<script type=\"text/javascript\" src=\"../js/jquery.grid-a-licious.js\" ></script>\n
				\t<script type=\"text/javascript\" src=\"../ckeditor/ckeditor.js\" ></script>\n
				\t<script type=\"text/javascript\" src=\"../js/json.js\" ></script>\n
				\t<script type=\"text/javascript\" src=\"../js/jquery.scripts.js\" ></script>\n
				\t<script type=\"text/javascript\" src=\"../js/scripts.js\" ></script>\n
		
		
		</head>\n
		<body>\n";
		
		$this->displayTopMenu();
		$this->displayMenuDroite();
		
		
	}
	
	/**
		displayTopMenu: Affiche le tableau de bord nord
	**/
	public function displayTopMenu()
	{
		echo "<div id=\"conteneur\">
		
		<ul id=\"menu_haut\">
			<li><a  href=\"#un\">aller au contenu</a> </li>
			<li><a  href=\"#ariane\">aller au fil d'ariane</a> </li>
			<li><a  href=\"aide.html\">politique d'accessibilité</a> </li>
		</ul>
		
		<img id=\"logo\" src=\"../images/logo-LMLP.png\" alt=\"Les mots à la pelle\" />
		<img id=\"laboratoire\" src=\"../images/laboratoire-enthousiaste-de.png\" alt=\"Laboratoire enthousiaste d'écriture\" />
		
		<ul id=\"menu\">
			<li> <a href=\"ateliers_tous_publics.html\">Ateliers tous publics</a> </li>
			<li> <a href=\"ateliers_enfants-ados.html\">Ateliers enfants-ados</a> </li>
			<li> <a href=\"ateliers_specifiques.html\">Ateliers spécifiques</a> </li>
			<li> <a href=\"formations.html\">Formations</a> </li>
			<li> <a href=\"travaux_redactionnels.html\">Travaux rédactionnels</a> </li>
			<li> <a href=\"publiez_vos_textes.html\">Publiez vos textes</a> </li>
		</ul>";

	}
	
	/**
		displayMenuDroite: Affiche le menu de droite
	**/
	public function displayMenuDroite()
	{		
		echo "<div id=\"contenu\">
				
			<p id=\"ariane\">Vous êtes ici : <a id =\"accueil\" href=\"../index.html\" title=\"revenir à l'accueil\">accueil</a> >".($this->titre)."</p>
			
			<ul id=\"menu_droite\">
				<li class=\"large\"><a class=\"rouge\" href=\"espace_lecture.php\">espace lecture</a></li>
				<li class=\"medium\"><a class=\"vert_clair\" href=\"l_association.html\">l'association</a></li>
				<li class=\"medium\"><a class=\"vert_clair\" href=\"devenez_adherent.html\">devenez adhérent</a></li>
				<li class=\"medium\"><a class=\"vert_clair\" href=\"contacts.html\">contacts</a></li>
				<li class=\"large\"><a class=\"vert_clair\" href=\"espace_adherents.php\">espace adhérents</a></li>";
				
				if (isset($_SESSION['connect']) and isset($_SESSION['statut'])) {
					if ($_SESSION['connect'] = true) {
						if ($_SESSION['statut'] > 1) {
							echo'<li class="medium"><a class="vert_clair_s" href="mes_ateliers.php">mes ateliers</a></li>';
							echo'<li class="medium"><a class="vert_clair_s" href="jeux.php">jeux</a></li>';
						}
						echo'<li class="medium"><a class="vert_clair_s" href="publier_texte.php">publier texte</a></li>';
						echo "<li class=\"large\"><a class=\"vert_clair_s\" href=\"../dyn/logout.php\">déconnexion</a></li>";
					}
				}
				
				echo "<li class=\"medium\"><a class=\"vert_fonce\" href=\"../index.html\">accueil</a></li>
				<li class=\"medium\"><a class=\"vert_fonce\" href=\"plan_du_site.html\">plan du site</a></li>
				<li class=\"medium\"><a class=\"vert_fonce\" href=\"aide.html\">aide</a></li>
			</ul>";
				echo "<div id=\"contenu_ajax\" class=\"ui-widget ui-widget-content ui-corner-all\" >\n
						\t<div class=\"titre center ui-state-active ui-corner-all\">\n
							\t<span id=\"headerTitre\">".$this->titre."</span>\n
						\t</div>\n<br />";
	}
	
	
	/**
		displayOrbit: Affiche le slider de defilement des images
	**/
	public function displayOrbit()
	{
		echo "<div class=\"orbit_center\">
				<div class=\"container\">
					<div id=\"featured\">

						<img src=\"../images/orbit/css.jpeg\"/>
						<img src=\"../images/orbit/cavid.jpg\"/>
						<img src=\"../images/orbit/classic.jpg\"/>
						<img src=\"../images/orbit/imagen.png\"/>
			
					</div>
				</div>
			</div>
			<br /><br />
		";

	}
	
	
	/**
		displayActu: Affiche la barre de défilement des actualités si il y en a
	**/

	public function displayActu()
	{
		
		include "../dyn/connexion.php";
		
		$compt = 0;
		$res = mysql_query("SELECT * FROM Actualite ORDER BY date DESC;");
		
		if (mysql_num_rows($res) != 0) {
			
			echo "<div class=\"center\" id=\"agrandirActu\">
					<a href=\"#un\" class=\"ui-state-default ui-corner-all button2\" id=\"affActu\" ><img src=\"../images/agrandir.png\" />Afficher les actualités</a>
					<br /><br /><br />
				</div>
		
			";	
			
			echo "<div class=\"center\" id=\"reduireActu\">
					<a href=\"#un\" class=\"ui-state-default ui-corner-all button2\" id=\"cachActu\" ><img src=\"../images/reduire.png\" />Cacher les actualités</a>
					<br /><br />
				</div>
		
			";	
		
			echo "<div id=\"actu\">";
				
			echo "<div class=\"scroll-pane ui-widget ui-widget-header ui-corner-all\">
					<div class=\"scroll-content\">
			";
			
			$limite = 0;
			
			while($row = mysql_fetch_array($res)) {
				$compt += 1;
				$limite += 1;
				if ($compt <= 11) {
					
					$nb_char_actu = strlen($row['titre']);
					$nb_char_supl = 18 - $nb_char_actu;
					
					$titre = str_replace(' ','&nbsp',$row['titre']);
					
					if ($nb_char_actu % 2 == 0) {
						while ($nb_char_supl != 0) {
							$titre = "&nbsp".$titre."&nbsp";
							$nb_char_supl -= 2;
						}
					}
					else {
						while ($nb_char_supl != 1) {
							$titre = "&nbsp".$titre."&nbsp";
							$nb_char_supl -= 2;
						}
						$titre = "".$titre."&nbsp";
					}
					
					echo "<div id=\"dialog".s($limite)."\" title=\"".$row['titre']."\">
							<p>".$row["contenu"]."</p>
						</div>
					";
					
					/* ui-widget-header */
					echo "<div class=\"scroll-content-item\">
							<a href =\"#\" id=\"opener".s($limite)."\" class=\"ui-state-default ui-corner-all button2\">".$titre."</a>
						</div>";
				}
			}
			
			echo "	</div>
					<div class=\"scroll-bar-wrap ui-widget-content ui-corner-bottom\">
						<div class=\"scroll-bar\"></div>
					</div>
				</div>
				<br /><br /><br /><br /><br /><br /><br /><br /><br />
			";
			
			echo "</div>";
		}

		
	}
	
	
	/**
		displayFooter : Affiche le pied de page
	**/
	public function displayFooter()
	{
		if (isset($_SESSION['connect'])) {
			if ($_SESSION['connect'] = true) {
				echo "</div>";
			}
		}
		
		echo "</div>
		
		</div>
		
		<div id=\"bas\">
		
		<ul id=\"menu_bas\">
			<li> <a href=\"#menu\">revenir au menu</a> </li>
			<li> <a href=\"#ariane\">revenir au fil d'ariane</a> </li>
			<li> <a href=\"../index.html\">accueil</a> </li>
			<li> <a href=\"ateliers_tout_publics.html\">ateliers tout publics</a> </li>
			<li> <a href=\"ateliers_enfants-ados.html\">ateliers enfants-ados</a> </li>
			<li> <a href=\"ateliers_specifiques.html\">ateliers spécifiques</a> </li>
			<li> <a href=\"formations.html\">formations</a> </li>
			<li> <a href=\"travaux_redactionnels.html\">travaux rédactionnels</a> </li>
			<li> <a href=\"publiez_vos_textes.html\">publiez vos textes</a> </li>
			<li> <a href=\"espace_lecture.html\">espace lecture</a> </li>
			<li> <a href=\"l_association.html\">l'association</a> </li>
			<li> <a href=\"contacts.html\">contacts </a> </li>
			<li> <a href=\"espace_adherents.php\">espace adhérents</a> </li>
			<li> <a href=\"plan_du_site.html\">plan du site</a> </li>
			<li> <a href=\"aide.html\">aide</a> </li>
			<li> <a href=\"mentions_legales.html\">mentions légales</a> </li>
		</ul>
	
		</div>
		</body>\n
		</html>";
	}
	
	


/**


	Fonctions d'ajax


**/


	/**
		initAjax : Démarre la tamporisation et initialise le tableau de communication Ajax avec 3 valeurs par défaut : 
						erreur : Booléen representant l'état de la transaction ( si erreur ou non )
						msg : Message à retourner au client
						header: Entête à retourner au client
	**/
	public function initAjax()
	{ 
		ob_start();
		$this->retourAjax = array("erreur" => false,
									"msg" => "",
									"header" => $this->titre
		);
	}

/**


	Fonctions générales


**/


	/**
		verifDroits : Retourne vrai si l'utilisateur peut consulter la page, faux sinon
	**/
	public function verifDroits()
	{
		if($this->rangMinAdmin == 0){
			return true;
		}else {
			if(isset($_SESSION['statut'])){
				return $_SESSION['statut'] >= $this->rangMinAdmin;
			}else{
				return false;
			}
		}
	}

	/**
		query : Effectue une requête SQL(MySQL) et fait la gestion des erreurs
				- sql : Requête SQL à traiter
				- afficherRequete : Faux par défaut, affiche la requête passée en paramètre si vrai
	**/
	public function query($sql, $afficherRequete = false)
	{
		if($afficherRequete or $this->mode == "VERBOSE")
			echo BMInfo("La requête <b>".$sql."</b> est exécutée",false)."<br />";
		$res = $this->db->query($sql);
		if(!$res)
		{
			$this->_die("Erreur SQL",($this->mode != "PROD" ? BMInfo("Requête : $sql",false)." <br />":"" ).$this->db->lastError);
		}
		
		return $res;
	}

/**


	Fonctions internes


**/


	/**
		initFlux : Initialise la gestion des erreurs
	**/
	private function _initFlux()
	{
		if($this->mode == "PROD")
			error_reporting(0);
		else
			error_reporting(E_ALL);
	}
	
	/**
		gestionBD : Initialise la connection à la base de données
	**/
	private function _gestionBD()
	{
		try
		{
			$this->db = new DB();
		}catch ( Exception $e ) 
		{
			$this->_die("Erreur de connexion à la base de données",$e->getMessage());
		}
	}
	
	
	/**
		_die : Arrête tout traitement et affiche la page avec un message d'erreur et une entête
				- entente : Titre de l'erreur
				- msg : Détail de l'erreur
	**/
	public function _die($entete, $msg)
	{
		//ob_end_clean();
		//$this->titre = $entete;
		//$this->displayHeader();
		//echo $msg;
		//$this->displayFooter();
		header('Location: ../pages/erreur_404.php');
		die();
	}
	
	/**
		_rewriteURL : Remplace tous les liens internes de la page en accord avec le .htaccess
	**/
	protected function _rewriteURL() // TODO 
	{
		$html = ob_get_contents();
		ob_end_clean();

		echo $html;
	}

}

?>